/**
 * anonymous recursion
 */
function fact(n) {
	if (n < 2) {
		return n;
	} else {
		return n * fact(n - 1);
	}
}
console.log(fact(5));

var f = function(n) {
	if (n < 2) {
		return n;
	} else {
		return n * f(n - 1);
	}
}
console.log(f(5));



(function (n) {
	if (n < 2) {
		return n;
	} else {
		//return n * ?(n - 1);
	}
})(5);

function factNoParam() {
	if (arguments[0] < 2) {
		return arguments[0];
	} else {
		return arguments[0] * factNoParam(arguments[0] - 1);
	}
}
console.log(factNoParam(5));

function fact(n) {
	if (n < 2) {
		return n;
	} else {
		return n * arguments.callee(n - 1);
	}
}
console.log(fact(5));


(function (n) {
	if (n < 2) {
		return n;
	} else {
		return n * arguments.callee(n - 1);
	}
})(5);


